iT邦幫忙

2021 iThome 鐵人賽

DAY 9
0
Modern Web

Laravel 實務筆記系列 第 9

Eloquent ORM - 建立 Model

  • 分享至 

  • xImage
  •  

表單長好之後準備來新增跟查詢資料啦。

Laravel 原生有 DB 類別來幫助查詢跟新增資料,像是

$users = DB::table('users')->get(); //取出 users 表單的所有資料

不過 DB 主要就是單純的查詢跟寫入功能,對於寫入前跟讀取後的資料處理都要再另外進行。

這部分就是 Eloquent ORM 的長處了,Eloquent 會針對各表單建立 Model 類別,在這個 Model 中可以定義各欄位寫入跟讀取時的額外處理,像是型別轉換或編譯、解析 Json 資料,或是限制某些欄位不被直接寫入(像是外鍵 id),又或是在大量讀取資料時不包含指定欄位等等。在 Model 設定之後進行查詢的程式碼都可以簡化成幾個簡單的函式,整體上可以讓程式碼更簡潔、更容易閱讀。

Model

首先用指令產生 Model

sail artisan make:model Todo

產生的 Model 預設放在 App\Models 底下。

如果是已經用 migration 建好了表單,要產生對應的 Model 的話就要注意 Model 的名稱,以 Todo 為例, Eloquent 在執行查詢時會自動找尋名稱為 todos 的表單。

也可以直接從 Model 開始建立,建立時在一併產生 migration 檔案

sail artisan make:model Todo -m

除了 migration 外也可以同時產生 Controller,Seeder(種子資料),Factory(自動產生種子資料值)檔案

sail artisan make:model Todo -m -c -s -f
sail artisan make:model Todo -mcsf  //功能跟上面相同

-c 指令產生的 controller 會是全空的,可以再加上 -r (resource)或 --api (api source) 指令產生預設的函式

sail artisan make:model Todo -mcsfr

也有直接產生全餐的指令

sail artisan make:model Todo -a

-a 指令產生的 controller 預設是用 resource controller,可以加上 --api 修改成 api soucre。

sail artisan make:model Todo -a --api

這樣就省去自己一個個建立的時間了,再到 routes/web.php 加上

// routes/api.php
use App\Http\Controllers\TodoController;

//...

Route::resource('todo', TodoController::class);

這樣 CRUD 的路由就都開通了,可以直接開始實作。

References

Eloquent:Getting Started

上一篇
Migrations
下一篇
Eloquent ORM - 寫入資料
系列文
Laravel 實務筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言